package com.cpimex.eprice;

import java.sql.*;
import java.util.*;
import com.cpimex.eprice.bean.PerfilBean;
import com.cpimex.eprice.bean.GerenteBean;

public class Parametro {
    public Parametro() {
    }


    public Map muestraParametro(Statement stmt) throws SQLException {
        Map map = new HashMap();
        ResultSet rs = null;
        String str_query = " SELECT id_param, " +
                           "        director_param, " +
                           "        gerente_param, " +
                           "        vpo_param, " +
                           "        dirbackup_param, " +
                           "        (SELECT nombre_usuario FROM ep_vw_usuario WHERE nomina_usuario = dirbackup_param) AS nombre_dirbackup, " +
                           "        vpobackup_param, " +
                           "        (SELECT nombre_usuario FROM ep_vw_usuario WHERE nomina_usuario = vpobackup_param) AS nombre_vpobackup, " +
                           "        autorizaVPO_param"+
                           " FROM ep_parametro ";

        rs = stmt.executeQuery(str_query);

        while(rs.next()){
            String  str_idParam = rs.getString("id_param");
            String  str_directorParam = rs.getString("director_param");
            String  str_gerenteParam = rs.getString("gerente_param");
            String  str_vpoParam = rs.getString("vpo_param");
            String  str_dirBackup = rs.getString("dirbackup_param");
            String  str_dirBackupN = rs.getString("nombre_dirbackup");
            String  str_vpoBackup = rs.getString("vpobackup_param");
            String  str_vpoBackupN = rs.getString("nombre_vpobackup");
            boolean  bool_autorizaVPO = rs.getBoolean("autorizaVPO_param");
            
            map.put("str_idParam",str_idParam);
            map.put("str_directorParam", str_directorParam);
            map.put("str_gerenteParam", str_gerenteParam);
            map.put("str_vpoParam", str_vpoParam);
            map.put("str_dirBackup", str_dirBackup);
            map.put("str_dirBackupN", str_dirBackupN);
            map.put("str_vpoBackup", str_vpoBackup);
            map.put("str_vpoBackupN", str_vpoBackupN);
            map.put("bool_autorizaVPO", new Boolean(bool_autorizaVPO));
        }
        return map;
    }

    public void actualizaParametro(Statement stmt, Map map_parametros) throws
            SQLException{
        String str_idParam = ((String)map_parametros.get("id_param"));
        boolean bool_autorizaVPO = ((Boolean)map_parametros.get("bool_autorizaVPO")).booleanValue();

        String str_query = " UPDATE  ep_parametro                                                              " +
                           " SET                                                                               " +
                           "    director_param = '" + ((String)map_parametros.get("director_param")) + "',     " +
                           "    gerente_param = '" + ((String)map_parametros.get("gerente_param")) + "',       " +
                           "    vpo_param = '" + ((String)map_parametros.get("vpo_param")) + "',               " +
                           "    dirbackup_param = '" + ((String)map_parametros.get("dirbackup_param")) + "',   " +
                           "    vpobackup_param = '" + ((String)map_parametros.get("vpobackup_param")) + "',   " +
                           "    autorizaVPO_param = "+ (bool_autorizaVPO?1:0)+"                                " +
                           " WHERE id_param = '" + str_idParam +"'                                             ";
        stmt.executeUpdate(str_query);
    }

    public ArrayList muestraUsuario(Statement stmt, String str_param) throws
            SQLException {
        ArrayList arr_user = new ArrayList();
        String str_nombre;
        String str_nomina;
        String str_query = " SELECT nomina_usuario, " +
                           "        nombre_usuario " +
                           " FROM ep_vw_usuario " +
                           " WHERE nombre_perfil = '"+str_param+"'";
        ResultSet rs = stmt.executeQuery(str_query);
        while(rs.next()){
            PerfilBean perfil = new PerfilBean();
            str_nomina = rs.getString("nomina_usuario");
            str_nombre = rs.getString("nombre_usuario");

            perfil.setStr_nomina(str_nomina);
            perfil.setStr_nombreUsuario("("+str_nomina+") "+str_nombre);

            arr_user.add(perfil);
        }
        return arr_user;
    }

    public ArrayList listarUsuario(Statement stmt, String str_search) throws SQLException {

        ArrayList arr_usuario = new ArrayList();
        boolean bool_fila = true;

        if(!str_search.equals("")){
            String str_query = " SELECT nomina_usuario, " +
                               "         nombre_usuario " +
                               " FROM ep_vw_usuario     " +
                               " WHERE nomina_usuario not in ( SELECT codigo_gte FROM ep_claseProducto ) AND " +
                               "       nombre_usuario LIKE '%"+ str_search +"%' OR " +
                               "       nomina_usuario LIKE '%"+ str_search +"%' ";

           ResultSet rs = stmt.executeQuery(str_query);
           while(rs.next()){
               GerenteBean gerente = new GerenteBean();
               gerente.setStr_nominaUsuario(rs.getString("nomina_usuario"));
               gerente.setStr_nombreUsuario(rs.getString("nombre_usuario"));
               gerente.setBool_fila(bool_fila);

               bool_fila = !bool_fila;
               arr_usuario.add(gerente);
           }
        }
        return arr_usuario;
    }
}
